home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / graphics / gnuplot / term / qms.trm < prev    next >
Text File  |  1993-09-15  |  4KB  |  158 lines

  1. /*
  2.  * $Id: qms.trm%v 3.50 1993/07/09 05:35:24 woo Exp $
  3.  *
  4.  */
  5.  
  6. /* GNUPLOT - qms.trm */
  7. /*
  8.  * Copyright (C) 1990 - 1993   
  9.  *
  10.  * Permission to use, copy, and distribute this software and its
  11.  * documentation for any purpose with or without fee is hereby granted, 
  12.  * provided that the above copyright notice appear in all copies and 
  13.  * that both that copyright notice and this permission notice appear 
  14.  * in supporting documentation.
  15.  *
  16.  * Permission to modify the software is granted, but not the right to
  17.  * distribute the modified code.  Modifications are to be distributed 
  18.  * as patches to released version.
  19.  *  
  20.  * This software  is provided "as is" without express or implied warranty.
  21.  * 
  22.  * This file is included by ../term.c.
  23.  *
  24.  * This terminal driver supports:
  25.  *  QMS laser printers
  26.  *
  27.  * AUTHORS
  28.  *  Colin Kelley, Thomas Williams, Russell Lang
  29.  * 
  30.  * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
  31.  * 
  32.  */
  33.  
  34. #define QMS_XMAX 9000
  35. #define QMS_YMAX 6000
  36.  
  37. #define QMS_XLAST (QMS_XMAX - 1)
  38. #define QMS_YLAST (QMS_YMAX - 1)
  39.  
  40. #define QMS_VCHAR        120
  41. #define QMS_HCHAR        70
  42. #define QMS_VTIC        70
  43. #define QMS_HTIC        70
  44.  
  45. int qms_line = 0;    /* to remember current line type */
  46.  
  47. QMS_init()
  48. {
  49. /* This was just ^IOL, but at Rutgers at least we need some more stuff */
  50.   fprintf(outfile,"^PY^-\n^IOL\n^ISYNTAX00000^F^IB11000^IJ00000^IT00000\n");
  51. /*                 ^ QUIC on    ^set defaults  ^ set botttom,top,left margins
  52.                           ^landscape         ^free format   */
  53. /* set defaults are: implicit decimal point, units in inches, 
  54.    numbers left justified, units in 1/1000 inch, do not ignore spaces */
  55. /* margins are in 1/1000 inch units */
  56. }
  57.  
  58.  
  59. QMS_graphics()
  60. {
  61.     fprintf(outfile,"^IGV\n");
  62. /*                     ^enter graphics vector mode */
  63. }
  64.  
  65.  
  66.  
  67. QMS_text()
  68. {
  69. /* added ^-, because ^, after an ^I command doesn't actually print a page */
  70. /* Did anybody try this code out?  [uhh...-cdk] */
  71.     fprintf(outfile,"^IGE\n^-^,");
  72. /*                     ^exit graphics vector mode
  73.                            ^pass terminator
  74.                              ^print page  */
  75. }
  76.  
  77.  
  78. QMS_linetype(linetype)
  79. int linetype;
  80. {
  81. static int width[2+9] = {7, 3, 3, 3, 3, 5, 5, 5, 7, 7, 7};
  82. static int type[2+9] =  {0, 1, 0, 2, 3, 0, 2, 3, 0, 2, 3};
  83. /*
  84.  * I don't know about Villanova, but on our printer, using ^V without
  85.  * previously setting up a pattern crashes the microcode.
  86.  * [nope, doesn't crash here. -cdk]
  87.  * [it generates a controller error here on dotted lines. - rjl]
  88.  */
  89. /* Code to define patterns added by rjl
  90.  * According to the manual it should work - but it doesn't
  91.  */
  92.     qms_line = linetype;
  93.     if (linetype >= 9)
  94.         linetype %= 9;
  95.     fprintf(outfile,"^PW%02d\n",width[linetype+2]); 
  96. /*                     ^width in dots */
  97.     switch (type[linetype+2]) {
  98.         case 1 :    /* short dash */
  99.             fprintf(outfile,"^PV102025^G\n^V1\n");
  100. /* ^PV = define pattern vector, 1 = pattern number,
  101.    02 = number of pen downs and ups, 025 = .025" length of ups/downs */
  102.             break;
  103.         case 2 :    /* medium dash */
  104.             fprintf(outfile,"^PV202050^G\n^V2\n");
  105.             break;
  106.         case 3 :    /* long dash */
  107.             fprintf(outfile,"^PV302100^G\n^V3\n");
  108.             break;
  109.         default:
  110.         case 0 :
  111.             fprintf(outfile,"^V0\n");
  112.             break;
  113.     }
  114. }
  115.  
  116.  
  117. QMS_move(x,y)
  118. int x,y;
  119. {
  120.     fprintf(outfile,"^U%05d:%05d\n", 1000 + x, QMS_YLAST + 1000 - y);
  121. /*                     ^pen up vector*/
  122. }
  123.  
  124.  
  125. QMS_vector(x2,y2)
  126. int x2,y2;
  127. {
  128.     fprintf(outfile,"^D%05d:%05d\n", 1000 + x2, QMS_YLAST + 1000 - y2);
  129. /*                     ^pen down vector*/
  130. }
  131.  
  132.  
  133. QMS_put_text(x,y,str)
  134. unsigned int x,y;
  135. char str[];
  136. {
  137. char ch;
  138.     QMS_move(x,y + QMS_VCHAR/3);
  139.     fputs("^IGE\n",outfile);
  140.     ch = *str++;
  141.     while(ch!='\0') {
  142.         if (ch=='^')
  143.             putc('^',outfile);
  144.         putc(ch,outfile);
  145.         ch = *str++;
  146.     }
  147.     fputs("\n^IGV\n",outfile);
  148.     QMS_linetype(qms_line); /* restore line type */
  149. }
  150.  
  151.  
  152. QMS_reset()
  153. {
  154.     fprintf(outfile,"^PN^-\n");
  155. /*                     ^QUIC off*/
  156. }
  157.  
  158.